home *** CD-ROM | disk | FTP | other *** search
- # This script contains hooks to allow init scripts to control
- # a splash program during boot and shutdown.
- #
- # To override these, provide a /lib/init/splash-functions scripts
- # with new functions (it is sourced at the end of this file)
- #
- # Note that scripts have a number of constraints:
- # 1) Should avoid using any binaries not found in the initramfs so that
- # the same hooks can be used there.
- # 2) This also means that bashisms can't be used.
- # 3) Scripts must work when running under "set -e".
- # 4) "local" should be used to avoid overwriting global variables.
-
-
- # Detects whether a splash is running
- splash_running() { return 1; }
-
- # Tells the splash to quit
- splash_stop() { return 0; }
-
- # Tells the splash to start if not already running
- splash_start() { return 1; }
-
- # Tells the splash the current boot/shutdown progress
- # $1 contains the progress as a percentage value between -100 and 100
- # Positive values indicate boot progress
- # Negative values indicate shutdown progress
- splash_progress()
- {
- local progress tmp
- progress="$1"
-
- splash_running || return 0
-
- # Sanity check step 1 - must match ^-[0-9]*$
- tmp="$progress"
-
- # Strip trailing numbers
- while [ "${tmp%[0-9]}" != "$tmp" ]; do
- tmp="${tmp%[0-9]}"
- done
-
- # Now "-" or no characters should remain
- if [ -n "$tmp" ] && [ "$tmp" != "-" ]; then
- return 1
- fi
-
- # Sanity check step 2 - check for values >= -100 and <= 100
- if [ "$progress" != "${progress#-}" ]; then
- # Negative value
- if [ "$progress" -lt -100 ]; then
- return 1
- fi
- else
- # Positive value
- if [ "$progress" -gt 100 ]; then
- return 1
- fi
- fi
-
- # Sanity checks passed
- custom_splash_progress "$progress" || return 1
- return 0
- }
-
- # Customizations should replace this function instead of splash_progress above
- custom_splash_progress() { return 0; }
-
-
- # Tells the splash that a task which may take an unknown amount of
- # time has started (such as a fsck). This is useful to make sure the
- # splash doesn't time out and to give visual feedback to the user.
- splash_start_indefinite() { return 0; }
-
- # Tells the splash that an indefinite task is done
- splash_stop_indefinite() { return 0; }
-
- # Gets user input from a splash
- # $1 contains the text for the user prompt
- # $2 describes the type of input:
- # regular = regular input, e.g. a user name
- # password = input which should not be echoed to screen, e.g. a password
- # enter = A "press enter to continue" type of prompt
- #
- # Returns 1 if no user input is possible
- # Should be called with an alternative non-splash input fallback:
- # INPUT="$(splash_user_input "Enter password:" password)" || \
- # INPUT="$(manual_method)"
- splash_user_input() { return 1; }
-
- # Allow these functions to be overridden with custom scripts. This is
- # the official API hook.
- if [ -e /lib/init/splash-functions ] ; then . /lib/init/splash-functions ; fi
-